home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / c / stormamiga_lib-v45_00d / stormc_v3-examples / standard / speedtest / speedtest.c < prev   
C/C++ Source or Header  |  2000-02-28  |  9KB  |  377 lines

  1. /********************************************
  2. **                                         **
  3. **                SpeedTest                **
  4. **                                         **
  5. **  Copyright 1996/98 by CyberdyneSystems  **
  6. **                                         **
  7. **        written by Matthias Henze        **
  8. **                                         **
  9. ***************** 11/07/97 *****************/
  10.  
  11. #include <stdio.h>
  12. #include <time.h>
  13. #include <math.h>
  14. #include <pragma/exec_lib.h>
  15.  
  16. clock_t timestart;
  17. double z = 0;
  18.  
  19. void end (void)
  20. {
  21.   double y;
  22.   clock_t timeend;
  23.   timeend = clock ();
  24.   y = ((timeend - timestart) / (double)50);
  25.   printf ("Benötigte Zeit: %.5g  s\n", y);
  26.   z = z + y;
  27. }
  28.  
  29. int main (void)
  30. {
  31.   double *d, x;
  32.   double a = 80.9394;
  33.   double b = -80.9394;
  34.   int *e, i, loop;
  35.  
  36. printf("\nGeben Sie bitte die Anzahl der Testdurchläufe an: ");
  37. scanf("%d",&loop);
  38.  
  39. Forbid ();
  40.  
  41. /*--fabs--*/
  42. printf ("fabs (80.9394)\n");
  43. timestart = clock ();
  44.   for (i = 0; i < loop; i++)
  45.     x = fabs (a);
  46. end();
  47. printf ("Der absolute Betrag von 80.9394 sollte 80.9394 sein und ist: %g\n\n", x);
  48.  
  49. printf ("fabs (-80.9394)\n");
  50. timestart = clock ();
  51.   for (i = 0; i < loop; i++)
  52.     x = fabs (b);
  53. end();
  54. printf ("Der absolute Betrag von -80.9394 sollte 80.9394 sein und ist: %g\n\n", x);
  55.  
  56. /*--floor--*/
  57. printf ("floor (80.9394)\n");
  58. timestart = clock ();
  59.   for (i = 0; i < loop; i++)
  60.     x = floor (a);
  61. end();
  62. printf ("Die nächstkleinere Ganzzahl von 80.9394 sollte 80 sein und ist: %g\n\n", x);
  63.  
  64. printf ("floor (-80.9394)\n");
  65. timestart = clock ();
  66.   for (i = 0; i < loop; i++)
  67.     x = floor (b);
  68. end();
  69. printf ("Die nächstkleinere Ganzzahl von -80.9394 sollte -81 sein und ist: %g\n\n", x);
  70.  
  71. /*--sqrt--*/
  72. printf ("sqrt (9)\n");
  73. timestart = clock ();
  74.   for (i = 0; i < loop; i++)
  75.     x = sqrt (9);
  76. end();
  77. printf ("Die Quadratwurzel von 9 sollte 3 sein und ist: %g\n\n", x);
  78.  
  79. printf ("sqrt (-9)\n");
  80. timestart = clock ();
  81.   for (i = 0; i < loop; i++)
  82.     x = sqrt (-9);
  83. end();
  84. printf ("Die Quadratwurzel von -9 sollte NaN (Not a Number) sein und ist: %g\n\n", x);
  85.  
  86. /*--ceil--*/
  87. printf ("ceil (80.9394)\n");
  88. timestart = clock ();
  89.   for (i = 0; i < loop; i++)
  90.     x = ceil (a);
  91. end();
  92. printf ("Die nächstgrößere Ganzzahl von 80.9394 sollte 81 sein und ist: %g\n\n", x);
  93.  
  94. printf ("ceil (-80.9394)\n");
  95. timestart = clock ();
  96.   for (i = 0; i < loop; i++)
  97.     x = ceil (b);
  98. end();
  99. printf ("Die nächstgrößere Ganzzahl von -80.9394 sollte -80 sein und ist: %g\n\n", x);
  100.  
  101. /*--frexp--*/
  102. printf ("frexp (9)\n");
  103. timestart = clock ();
  104.   for (i = 0; i < loop; i++)
  105.     x = frexp (9,(void *) &e);
  106. end();
  107. printf ("Die Mantisse von 9 sollte 0.5625 sein und ist: %g\nDer Exponent von 9 sollte 4 sein und ist: %d\n\n", x, e);
  108.  
  109. printf ("frexp (88)\n");
  110. timestart = clock ();
  111.   for (i = 0; i < loop; i++)
  112.     x = frexp (88,(void *) &e);
  113. end();
  114. printf ("Die Mantisse von 88 sollte 0.6875 sein und ist: %g\nDer Exponent von 88 sollte 7 sein und ist: %d\n\n", x, e);
  115.  
  116. /*--modf--*/
  117. printf ("modf (80.9394)\n");
  118. timestart = clock ();
  119.   for (i = 0; i < loop; i++)
  120.     x = modf (a,(void *) &d);
  121. end();
  122. printf ("Der Nachkommateil von 80.9394 sollte 0.9394 sein und ist: %g\nDer Vorkommateil von 80.9394 sollte 80 sein und ist: %g\n\n", x, d);
  123.  
  124. printf ("modf (-80.9394)\n");
  125. timestart = clock ();
  126.   for (i = 0; i < loop; i++)
  127.     x = modf (b,(void *) &d);
  128. end();
  129. printf ("Der Nachkommateil von -80.9394 sollte -0.9394 sein und ist: %g\nDer Vorkommateil von -80.9394 sollte -80 sein und ist: %g\n\n", x, d);
  130.  
  131. /*--fmod--*/
  132. printf ("fmod (5.7, 1.5)\n");
  133. timestart = clock ();
  134.   for (i = 0; i < loop; i++)
  135.     x = fmod (5.7,1.5);
  136. end();
  137. printf ("Das Ergebnis dieser Funktion sollte 1.2 sein und ist: %g\n\n", x);
  138.  
  139. printf ("fmod (-5.7, 1.5)\n");
  140. timestart = clock ();
  141.   for (i = 0; i < loop; i++)
  142.     x = fmod (-5.7,1.5);
  143. end();
  144. printf ("Das Ergebnis dieser Funktion sollte -1.2 sein und ist: %g\n\n", x);
  145.  
  146. /*--ldexp--*/
  147. printf ("ldexp (9, 3)\n");
  148. timestart = clock ();
  149.   for (i = 0; i < loop; i++)
  150.     x = ldexp (9,3);
  151. end();
  152. printf ("Das Produkt von 9 * (2³) sollte 72 sein und ist: %g\n\n", x);
  153.  
  154. printf ("ldexp (-9, 3)\n");
  155. timestart = clock ();
  156.   for (i = 0; i < loop; i++)
  157.     x = ldexp (-9,3);
  158. end();
  159. printf ("Das Produkt von -9 * (2³) sollte -72 sein und ist: %g\n\n", x);
  160.  
  161. /*--exp--*/
  162. printf ("exp (0)\n");
  163. timestart = clock ();
  164.   for (i = 0; i < loop; i++)
  165.     x = exp (0);
  166. end();
  167. printf ("Das Ergebnis dieser Funktion sollte 1 sein und ist: %g\n\n", x);
  168.  
  169. printf ("exp (1)\n");
  170. timestart = clock ();
  171.   for (i = 0; i < loop; i++)
  172.     x = exp (1);
  173. end();
  174. printf ("Das Ergebnis dieser Funktion sollte 2.71828 sein und ist: %g\n\n", x);
  175.  
  176. /*--log--*/
  177. printf ("log (1)\n");
  178. timestart = clock ();
  179.   for (i = 0; i < loop; i++)
  180.     x = log (1);
  181. end();
  182. printf ("Der Logarithmus naturalis von 1 sollte 0 sein und ist: %g\n\n", x);
  183.  
  184. printf ("log (9)\n");
  185. timestart = clock ();
  186.   for (i = 0; i < loop; i++)
  187.     x = log (9);
  188. end();
  189. printf ("Der Logarithmus naturalis von 9 sollte 2.19722 sein und ist: %g\n\n", x);
  190.  
  191. /*--log10--*/
  192. printf ("log10 (1)\n");
  193. timestart = clock ();
  194.   for (i = 0; i < loop; i++)
  195.     x = log10 (1);
  196. end();
  197. printf ("Der dekadische Logarithmus von 1 sollte 0 sein und ist: %g\n\n", x);
  198.  
  199. printf ("log10 (9)\n");
  200. timestart = clock ();
  201.   for (i = 0; i < loop; i++)
  202.     x = log10 (9);
  203. end();
  204. printf ("Der dekadische Logarithmus von 9 sollte 0.954243 sein und ist: %g\n\n", x);
  205.  
  206. /*--pow--*/
  207. printf ("pow (9,1)\n");
  208. timestart = clock ();
  209.   for (i = 0; i < loop; i++)
  210.     x = pow (9,1);
  211. end();
  212. printf ("Die Potenz 9¹ sollte 9 sein und ist: %g\n\n", x);
  213.  
  214. printf ("pow (0.9,3)\n");
  215. timestart = clock ();
  216.   for (i = 0; i < loop; i++)
  217.     x = pow (0.9,3);
  218. end();
  219. printf ("Die Potenz 0.9³ sollte 0.729 sein und ist: %g\n\n", x);
  220.  
  221. /*--acos--*/
  222. printf ("acos (0)\n");
  223. timestart = clock ();
  224.   for (i = 0; i < loop; i++)
  225.     x = acos (0);
  226. end();
  227. printf ("Der Arcuscosinus von 0 sollte 1.5708 sein und ist: %g\n\n", x);
  228.  
  229. printf ("acos (1)\n");
  230. timestart = clock ();
  231.   for (i = 0; i < loop; i++)
  232.     x = acos (1);
  233. end();
  234. printf ("Der Arcuscosinus von 1 sollte 0 sein und ist: %g\n\n", x);
  235.  
  236. /*--cos--*/
  237. printf ("cos (0)\n");
  238. timestart = clock ();
  239.   for (i = 0; i < loop; i++)
  240.     x = cos (0);
  241. end();
  242. printf ("Der Cosinus von 0 sollte 1 sein und ist: %g\n\n", x);
  243.  
  244. printf ("cos (1)\n");
  245. timestart = clock ();
  246.   for (i = 0; i < loop; i++)
  247.     x = cos (1);
  248. end();
  249. printf ("Der Cosinus von 1 sollte 0.540302 sein und ist: %g\n\n", x);
  250.  
  251. /*--cosh--*/
  252. printf ("cosh (0)\n");
  253. timestart = clock ();
  254.   for (i = 0; i < loop; i++)
  255.     x = cosh (0);
  256. end();
  257. printf ("Der Cosinus hyperbolicus von 0 sollte 1 sein und ist: %g\n\n", x);
  258.  
  259. printf ("cosh (1)\n");
  260. timestart = clock ();
  261.   for (i = 0; i < loop; i++)
  262.     x = cosh (1);
  263. end();
  264. printf ("Der Cosinus hyperbolicus von 1 sollte 1.54308 sein und ist: %g\n\n", x);
  265.  
  266. /*--asin--*/
  267. printf ("asin (0)\n");
  268. timestart = clock ();
  269.   for (i = 0; i < loop; i++)
  270.     x = asin (0);
  271. end();
  272. printf ("Der Arcussinus von 0 sollte 0 sein und ist: %g\n\n", x);
  273.  
  274. printf ("asin (1)\n");
  275. timestart = clock ();
  276.   for (i = 0; i < loop; i++)
  277.     x = asin (1);
  278. end();
  279. printf ("Der Arcussinus von 1 sollte 1.5708 sein und ist: %g\n\n", x);
  280.  
  281. /*--sin--*/
  282. printf ("sin (0)\n");
  283. timestart = clock ();
  284.   for (i = 0; i < loop; i++)
  285.     x = sin (0);
  286. end();
  287. printf ("Der Sinus von 0 sollte 0 sein und ist: %g\n\n", x);
  288.  
  289. printf ("sin (1)\n");
  290. timestart = clock ();
  291.   for (i = 0; i < loop; i++)
  292.     x = sin (1);
  293. end();
  294. printf ("Der Sinus von 1 sollte 0.841471 sein und ist: %g\n\n", x);
  295.  
  296. /*--sinh--*/
  297. printf ("sinh (0)\n");
  298. timestart = clock ();
  299.   for (i = 0; i < loop; i++)
  300.     x = sinh (0);
  301. end();
  302. printf ("Der Sinus hyperbolicus von 0 sollte 0 sein und ist: %g\n\n", x);
  303.  
  304. printf ("sinh (1)\n");
  305. timestart = clock ();
  306.   for (i = 0; i < loop; i++)
  307.     x = sinh (1);
  308. end();
  309. printf ("Der Sinus hyperbolicus von 1 sollte 1.1752 sein und ist: %g\n\n", x);
  310.  
  311. /*--atan--*/
  312. printf ("atan (0)\n");
  313. timestart = clock ();
  314.   for (i = 0; i < loop; i++)
  315.     x = atan (0);
  316. end();
  317. printf ("Der Arcustangens von 0 sollte 0 sein und ist: %g\n\n", x);
  318.  
  319. printf ("atan (1)\n");
  320. timestart = clock ();
  321.   for (i = 0; i < loop; i++)
  322.     x = atan (1);
  323. end();
  324. printf ("Der Arcustangens von 1 sollte 0.785398 sein und ist: %g\n\n", x);
  325.  
  326. /*--atan2--*/
  327. printf ("atan2 (9,3)\n");
  328. timestart = clock ();
  329.   for (i = 0; i < loop; i++)
  330.     x = atan2 (9,3);
  331. end();
  332. printf ("Der Arkustangens von 9/3 sollte 1.24905 sein und ist: %g\n\n", x);
  333.  
  334. printf ("atan2 (90,15)\n");
  335. timestart = clock ();
  336.   for (i = 0; i < loop; i++)
  337.     x = atan2 (90,15);
  338. end();
  339. printf ("Der Arkustangens von 90/15 sollte 1.40565 sein und ist: %g\n\n", x);
  340.  
  341. /*--tan--*/
  342. printf ("tan (0)\n");
  343. timestart = clock ();
  344.   for (i = 0; i < loop; i++)
  345.     x = tan (0);
  346. end();
  347. printf ("Der Tangens von 0 sollte 0 sein und ist: %g\n\n", x);
  348.  
  349. printf ("tan (1)\n");
  350. timestart = clock ();
  351.   for (i = 0; i < loop; i++)
  352.     x = tan (1);
  353. end();
  354. printf ("Der Tangens von 1 sollte 1.55741 sein und ist: %g\n\n", x);
  355.  
  356. /*--tanh--*/
  357. printf ("tanh (0)\n");
  358. timestart = clock ();
  359.   for (i = 0; i < loop; i++)
  360.     x = tanh (0);
  361. end();
  362. printf ("Der Tangens hyperbolicus von 0 sollte 0 sein und ist: %g\n\n", x);
  363.  
  364. printf ("tanh (1)\n");
  365. timestart = clock ();
  366.   for (i = 0; i < loop; i++)
  367.     x = tanh (1);
  368. end();
  369. printf ("Der Tangens hyperbolicus von 1 sollte 0.761594 sein und ist: %g\n\n", x);
  370.  
  371.  
  372. Permit ();
  373.  
  374. printf ("Gesamtzeit für %d Durchgänge: %g  s\n", loop, z);
  375. return NULL;
  376. }
  377.